package nz.ac.massey.cs.domain;

import java.util.ArrayList;
import java.util.Map;

public interface IConstraint {

	/*
	 * add a cell to the constraint should only be used by the sudoku or sudoku subclass 
	 */
	public abstract void addCell(Cell cellToAdd);
	
	/*
	 *  update the value of the cell, check this value whether is violate
	 */
	public abstract boolean isViolated();
	
	/*
	 *  all cells of this constraint are not violated and all are filled in
	 */
	public abstract boolean isSatisfied();
	
	/*
	 * get the constraint type
	 */
	public String getType();
	
	/*
	 * get drawing info used by plug in to draw the constraint
	 */
	public Map<String,String> getDrawingInfo();
	
	/*
	 * get the cells that belong to the constaint
	 */
	public ArrayList<Cell> getCells();
	
	/*
	 * used when defining the constraint
	 */
	public void setConstraintInfo(String constraintInfo,ArrayList<String> range);

}